// 验证手机号码
function checkMobile(phone) {
  const reg = /^1[3-9]\d{9}$/;
  return reg.test(phone);
}

// 验证邮箱
function checkEmail(email) {
  const reg = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  return reg.test(email);
}

// 验证身份证号码（支持15位或18位）
function checkIDCard(id) {
  const reg = /^(^\d{15}$)|(^\d{17}(\d|X|x)$)$/;
  return reg.test(id);
}

// 判断是否为空
function isEmpty(value) {
  return (
    value === null ||
    value === undefined ||
    (typeof value === 'string' && value.trim() === '') ||
    (Array.isArray(value) && value.length === 0) ||
    (typeof value === 'object' && Object.keys(value).length === 0)
  );
}

// 验证用户名（字母数字下划线，长度3-16位）
function checkUsername(username) {
  const reg = /^[a-zA-Z0-9_]{3,16}$/;
  return reg.test(username);
}

// 验证密码强度（至少8位，包含字母和数字）
function checkPassword(password) {
  const reg = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/;
  return reg.test(password);
}

// 验证URL地址
function checkURL(url) {
  const reg = /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/;
  return reg.test(url);
}

// 验证车牌号（支持普通车牌和新能源车牌）
function checkCarPlate(plate) {
  const reg = /^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领])([A-Z])([A-Z0-9]{5}|[A-Z0-9]{6})$/;
  return reg.test(plate);
}

// 验证银行卡号（常见16位或19位数字）
function checkBankCard(card) {
  const reg = /^\d{16,19}$/;
  return reg.test(card);
}

// 封装所有方法到 validate 对象
const validate = {
  checkMobile,
  checkEmail,
  checkIDCard,
  isEmpty,
  checkUsername,
  checkPassword,
  checkURL,
  checkCarPlate,
  checkBankCard,
};

// 导出模块
module.exports = validate;
